package com.markerhub.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;

/**
 * <p>
 * 
 * </p>
 *
 * @author 深林中的书海
 * @since 2021-12-10
 */
@Data
//注解在类上；提供类所有属性的 getting 和 setting 方法，此外还提供了equals、canEqual、hashCode、toString 方法
@EqualsAndHashCode(callSuper = false)
//自动生成equals(Object other)和hashCode()方法，使用callSuper = false说明没有继承父类方法，true后继承
@Accessors(chain = true)
//lombok的注解，安装后使用生成的setter方法是void类型；如果设置为true生成的setter方法返回this（当前对象）。
//这样既可以.set().set()方法
//多种格式fluent（布尔型）、chain（布尔型）、prefix（String型）
@TableName("m_user")//映射的数据库表名
//但是在实体类属性中无法映射abc_abc这种格式直接携程abcabc即可
//可自动将labelid属性与表字段label_id映射
//可以通过注解方式解决表字段名和类属性名不一样的情况，在属性上设置@TableField(value="stu_name")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @NotBlank(message = "昵称不能为空")
    private String username;

    private String avatar;
    @NotBlank(message = "邮箱不能为空")
    @Email(message = "邮箱格式不正确")
    private String email;

    private String password;

    private Integer addressid;
    private Integer status;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime created;

    private LocalDateTime lastLogin;


}
